热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

容忍度|同人_人脸识别face_recognition安装与应用(附代码)

篇首语:本文由编程笔记#小编为大家整理,主要介绍了人脸识别----face_recognition安装与应用(附代码)相关的知识,希望对你有一定的参考价值。 

篇首语:本文由编程笔记#小编为大家整理,主要介绍了人脸识别----face_recognition安装与应用(附代码)相关的知识,希望对你有一定的参考价值。


  face_recognition号称是世界上最简单的基于python的人脸识别库,是在大名鼎鼎的深度学习框架dlib上做的整合,dlib模型在LFW(Labeled Faces in the Wild)能有99.38的准确率。另外face_recognition提供了相应的命令行工具,可以通过命令行来对图片文件夹进行人脸识别,非常的酷,跟随着文章开启步伐前行吧!

一、pip安装dlib库(建议第二种方法)

pip install Cmake
pip install boost


注意:一般还需要下载VS2019(建议不要用更老的版本!)社区版即可。安装好配置完进入下一步。


输入pip install dlib

二、下载whl文件安装

本人用的是python3.8 ,需要该文件请留言或者自行下载,请一定要根据版本下载对应的whl文件。

打开cmd,进入存放whl文件目录,如图:

二、安装face_recognition

pip install face_recognition


人脸识别并不需要使用dlib,但是安装face_recognition一定要先存在dlib库


三、使用pycharm进行人脸识别

如图,计算器已经存在face_recognition。


 views.py代码:

import os
import face_recognition
from django.http import HttpResponse
from numpy import ndarray
import numpy as np
from app.models import csone,ccun
import cv2
def cs(request):#拍照储存生成特征值并存储
# images = os.listdir('D:/opencv.img')
# 加载图像
a = input() #输入的是摄像头拍下图片的命名
print('ok')
cap = cv2.VideoCapture(0) # 打开摄像头,如果外加摄像头便不是0哦
while (1):
# get a frame
ret, frame = cap.read()
frame = cv2.flip(frame, 1) # 摄像头是和人对立的,将图像左右调换回来正常显示
# show a frame
cv2.imshow("capture", frame) # 生成摄像头窗口
b = input()
print('ok')
b=int(b)
if cv2.waitKey(1) & b==1: # 按下1 类似于摄像头拍照
cv2.imwrite("D:/opencv.img/" + a +".jpg", frame) # 并把图片保存到路径的文件夹
break
cap.release()
cv2.destroyAllWindows()
image_to_be_matched = face_recognition.load_image_file("D:/opencv.img/" + a +".jpg")

# 将加载图像编码为特征向量,这句是参考别人的代码哦
image_to_be_matched_encoded = face_recognition.face_encodings(image_to_be_matched)[0]
alist = ndarray.tolist(image_to_be_matched_encoded)#将矩阵转化为list,便于储存进mysql
print(alist)
for i in alist:
print(i)
people=ccun()#ccun是自定义的一个models
people.tezheng=i
people.name=a
people.save()
return HttpResponse("tt")
def opencvcs(request):#人脸识别
list = []
students = ccun.objects.filter(name='thth')#筛选出某人的特征值
for student in students:
studentlist=[student.tezheng]
list.extend(studentlist)
print(list)
c = np.array(list)#从list变成矩阵
# 遍历每张图像
images = os.listdir('D:/opencv.img')
for image in images:
# 加载图像
current_image = face_recognition.load_image_file("D:/opencv.img/" + image)
# 将加载图像编码为特征向量
current_image_encoded = face_recognition.face_encodings(current_image)[0]
# 将你的图像和图像对比,看是否为同一人
result = face_recognition.compare_faces([c], current_image_encoded, tolerance=0.48) # 容忍度范围,越大要求越低
# 检查是否一致
if result[0] == True:
piutuce=cv2.imread("D:/opencv.img/" + image)
res = cv2.resize(piutuce, (126, 126))
cv2.imshow('yes', res)
cv2.waitKey(0)
cv2.destroyAllWindows()#将正确的图像输出
else:
print("不同人: " + image)

#
return HttpResponse("tt")


models.py代码:

from django.db import models
class ccun(models.Model):
name = models.CharField(max_length=16)
tezheng = models.FloatField(default=1)

数据库展示




推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
author-avatar
绿林VS逍遥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有